feat(planning): accept-all-and-check action on the interview page routed to audit-answers - #5536
Conversation
One accept-audit event carries a round id in alt and the accepted questions as id and contentRev pairs. The server accepts each eligible item, skips a changed or ineligible one, writes the accept-audit event followed by one accept per accepted item carrying auditSeq, and answers with the accepted ids and the skipped ids with a reason. Exporters write an accept with auditSeq with the note "pending agent validation" so it never reads as a plain hand accept; commitments stay unconfirmed. Refs #5472 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rview page A round section with opened recommended questions gets a second button beside Accept all. Its dialog says agents will check the accepted answers and commitments stay unconfirmed. Confirming posts one accept-audit event with the round and the id and contentRev pairs, toasts the server's accepted and skipped result, and refreshes. UI checks cover the button's presence and absence and the single event. Refs #5472 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e 0.48.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s check them The accept-audit event carries no per-question text, so the dialog showed a typed note that was never sent and then cleared its draft. Questions carrying a note are now left out of the audit dialog, like challenged ones, and can be accepted one at a time to keep the note. surface.md says to handle the accept-audit seq and its accepts, and the dead accept-audit kind is removed from loose_ends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…audit Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 70a728d15a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Scope the accept-audit routing to the accepted questions only, so the audit skill does not fill or validate open branches outside the selected round. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 34s —— View job Security review —
|
|
Claude finished @kyle-sexton's task in 3m 51s —— View job Code review (
|
State the caller-named id scope under Preconditions so the pinned Step 1 section stays byte-identical. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Correction to the earlier reply: the id-list scope is stated under Preconditions in |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 19s —— View job Security review —
|
|
Claude finished @kyle-sexton's task in 4m 51s —— View job Code review (
|
|
Claude finished @kyle-sexton's task in 1m 35s —— View job Security review —
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 52s —— View job Code review (
|
|
Claude finished @kyle-sexton's task in 51s —— View job Security review —
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 3s —— View job Security review —
|
|
Claude finished @kyle-sexton's task in 2m 54s —— View job Code review (
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 35s —— View job Code review (
|
|
Claude finished @kyle-sexton's task in 1m 19s —— View job Security review —
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 59s —— View job Security review —
|
|
Claude finished @kyle-sexton's task in 57s —— View job Code review (
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 46s —— View job Code review (
|
|
Claude finished @kyle-sexton's task in 34s —— View job Security review —
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 59s —— View job Security review —
|
|
Claude finished @kyle-sexton's task in 1m 17s —— View job Code review (
|
Closes #5472
Summary
The interview page gains an "Accept all and have agents check them" action on each round. It posts one
accept-auditevent; the interview skill routes that event to/planning:audit-answers. The page holds no validation logic. Follows the owner decision on #4653 (Option B).Fix
POST /api/answer {kind:'accept-audit', alt:<round id>, items:[{id,contentRev}]}writes oneaccept-auditevent, then one ordinary accept per eligible item (auditSeqlinks them). Ineligible or changed items are returned inskipped; nothing accepted returns 409.accepted: REC; note: pending agent validation.context/surface.mdadds theaccept-auditevent row, says tohandleits seqs, and routes it to/planning:audit-answers.Verification
python3surface tests: test_server 151 (1 skipped), test_exporters 106, test_schema 17, test_round 92: pass.plugins/planning/surface/surface.test.sh: PASS=296 FAIL=0 SKIP=1 (htmlhint not installed).plugins/planning/tests/interview-defenses.test.sh: PASS=156 FAIL=0 (includes new routing pins).scripts/check-changelog-parity.sh --check --check-order: pass.scripts/validate-plugins.sh: pass.Related
Refs #4653 (owner decision 2026-09-29, Option B). #5480 records the decision in docs.
🤖 Generated with Claude Code